In cellular systems of today, Turbo coding is used for channel coding. This technique is used in both uplink and downlink transmission. In the receiver in the base station or in the mobile terminal, a Turbo decoder is implemented to inverse the Turbo encoding operation on the transmitted data.
The Turbo decoder is typically implemented as an iterative decoder. To be able to determine if the data has been decoded correctly, Cyclic Redundancy Check (CRC) bits are added to the transmitted data bits. When the CRC check indicates that the received data bits are correctly decoded, the Turbo decoder iterations stops. If the signal quality is high, the number of required iterations is likely small. But when the signal quality is low, the number of required iterations can be high. However, if the signal quality is too low, the decoder will not be able to decode the coded bits. In such a case the CRC check will never indicate a decoding success and there is no obvious way of determining when to stop the iteration process. One way of solving this problem is to have a fixed maximum number of iterations. This solution can also be used to avoid the extra computation due to the CRC checks between all iterations, and instead only one final CRC check is performed after the iteration procedure has terminated.
However, the decoding part by using the solution having a fixed maximum number of iterations is considered a complex hardware or software unit and it requires a large part of these resources. Hence, it is desired to reduce the number of iterations in order to reduce the complexity. However, this reduction will have an impact on the decoding performance. Therefore, efficient methods to stop the decoding iterations are desired.